ModBus通信プロトコルの概要
Modbusプロトコルは現在の工業制御分野に広く応用されている汎用通信プロトコルである。このプロトコルにより、コントローラ同士、またはコントローラは、イーサネットなどのネットワークを介して他のデバイスと通信することができます。Modbusプロトコルはマスタスレーブ通信技術を使用しており、マスタからスレーブを積極的に検索し、操作することができます。一般的にマスタ側が使用するプロトコルをModbus Master、スレーブ側が使用するプロトコルをModbus Slaveと呼ぶ。典型的な主装置は工業制御機と工業制御器などを含む、PLCプログラマブルコントローラなどの典型的なスレーブデバイス。Modbus通信物理インタフェースは、シリアルポート(RS 232とRS 485を含む)を選択することも、イーサネットポートを選択することもできます。通信は次の手順に従います。
・マスタ装置がスレーブ装置に要求を送信する
・マスタの要求をデバイスから分析して処理し、結果をマスタに送信する
●エラーが発生した場合、デバイスから例外機能コードが返される
英創ModBus通信プロトコルソフトウェア製品概要
英創社が発売したModBus通信プロトコルソフトウェア製品は主に英創ARM 9組み込みマザーボード環境に応用され、英創工制御マザーボードはすべて豊富なシリアルポート、ネットワーク資源、汎用GPIOインタフェースなどを持ち、同時に強大な処理能力を持っている。ModBus通信プロトコルソフトウェアを組み合わせると、ModBus通信仕様に準拠したマスター(Master)およびデバイス(Slave)のアプリケーションプラットフォームを非常に便利に構成することができます。ModBus通信のマスタスレーブ方式という特徴に対して、英創社のModBus通信プロトコルパッケージは、「ModBusマスタプロトコルソフトウェア」(modbus _ Masterと略称)と「ModBusデバイス側プロトコルソフトウェア」(modbus _ Slaveと略称)の2つの独立して使用できる部分に分かれている。現在、英創ModBus通信プロトコルソフトウェアはWinCE環境下で動作しており、C関数と静的LIBライブラリの形式で顧客に提供されている。主な特徴は次のとおりです。
・リアルタイムの産業用途に最適
●シリアルポートベースのModBus通信プロトコルアプリケーションまたはTCPベースのModBus通信プロトコルアプリケーションをサポートできる
●RTU伝送モード
●ほとんどのModbus機能コード操作をサポートし、コイル、離散スイッチに入力するビット操作、レジスタに対するバイト操作を含む
●サポート放送アドレス
●ModBus通信のタイムアウト時間を柔軟に設定できる
●通信中の送信プロトコルのエラーコードの詳細を取得できる
英創ModBusプロトコルソフトウェア通信関係図

英創ModBusプロトコルソフトウェアでサポートされている機能コード
ファンクションコード |
記述 |
1 |
リード単一コイル |
2 |
リードディスクリート入力 |
3 |
リード複数レジスタ |
4 |
リード入力レジスタ |
5 |
書き込みコイル |
6 |
ライト単一レジスタ |
15 |
書き込みコイル |
16 |
ライト複数レジスタ |
22 |
マスクライトレジスタ |
23 |
リード/ライトレジスタ |
ソフトウェアの基本的な使用方法
アプリケーションの使用を容易にするために、異なる通信媒体に対して一貫したコード形式を維持し、英創が提供するModBusプロトコルソフトウェア(modbus _ Masterとmodbus _ Slaveを含む)のAPI関数は、シリアルポートとTCPに基づくModbusプロトコルを同時にサポートすることができ、アプリケーションは初期化関数を呼び出す際に、異なるパラメータで区別するだけでよく、パラメータの説明については、対応するヘッダファイル:modbus _ Master.hとmodbus _ Slave.hを参照してください。
1、modbus _ Masterの応用
Modbusクライアントモードの応用としては、主に要求を準備してサーバ装置に要求を送信し、サーバの応答を待つことである。このようなアプリケーション開発を行う際、ユーザーはModbus標準文献及び制御対象機器の通信インタフェースデータマニュアルを参照し、英創が提供するmodbus _ Masterパッケージを直接呼び出して対応する操作API関数を提供し、サーバ機器へのアクセスと制御を完了することができる。このようなアプリケーション開発を行う場合、ユーザはmodbus _ master.h/modbus _ master.libを含めるだけでよい。
2、modbus _ Slaveの応用
ModBusサーバモデルのアプリケーションとしては、主にModBusアプリケーションのメッセージに対する分析と応答を実現する必要があるが、これはまだModBus全体の通信の一部であり、他の部分はアプリケーションデータへのアクセスも必要であり、この部分の内容はユーザー自身で定義する必要がある。お客様の使用を容易にするために、modbus _ Slaveパッケージでは関数ポインタの形式を通じて、これらのユーザインタフェース関数の自動ロードを実現し、ユーザアプリケーションデータ処理とModBusアプリケーションメッセージ応答を関連付ける。ユーザーは必要に応じてこれらのインタフェース関数を定義するだけで、それぞれの関数の具体的な定義は、特定のCPPファイル:DataProvider.cppによって実現されます。
このような開発アプリケーションの場合、modbus _ slave.h/modbus _ slave.libが定義するAPI関数である2つの部分のコンテンツを含める必要があることがわかります。もう1つの部分は、DataProvider.h/DataProvider.cppによって定義されたユーザデータインタフェース関数であり、インタフェース関数は、DataProvider.cppにおいてユーザが具体的に実装する必要がある。
ModBusアプリケーションメッセージにタイムリーに応答するためには、プログラム設計時にブロックモードであるmodbus _ Slave実行関数を繰り返し呼び出すスレッドを設計する必要があることに注意してください。
例えば、次のようになります。
(1)modbus設備側プロトコルの起動
hPort = mbusSlave_StartupServer(_T)'*')、1、10000、mbusSlave_Interface );
または
hPort=mbusSlave_StartupServer(_T)『COM3:9600-8-1-0』)、1,10000、mbusSlave_Interface );
(2)スレッド内で実行関数Serverloop応答要求を呼び出す
なお( 1 )
{
//ModBusメッセージの分析と応答のために実行関数を呼び出します。
結果 = mbusSlave_ServerLoop( hPort );
もし(結果!=0)//エラーを返すかどうかをチェック
{
//エラー処理:この例では、エラーコードのテキスト情報を取得して印刷します
wcscpy(szText, mbusSlave_GetErrorText(結果));
i1 = wcslen( szText );
もし(i1>0)
{
wcstombs( strText, szText, i1 );
printf()エラーコード: %s! n'Stretex);
}
}
}
これまで英創社が提供してきたModBus通信プロトコルソフトウェアは、C関数プラス静的ライブラリ(modbus.libまたはlibmodbus.aファイル)として顧客に提供されてきた。ますます多くのお客様が使用するようになるにつれて、英創はModBus通信プロトコル、特にマスタープロトコルソフトウェア(modbus _ Masterと略称する)を動的ライブラリ(modbus _ Master.dllまたはlibmbusmaster.soファイル)の形で英創組み込み型工学制御マザーボードカーネルシステムにプリインストールし、お客様のアプリケーションの呼び出しを容易にします。Modbusプロトコルをプリインストールした工学制御ボードには、英創ESMシリーズのすべてのボード(ESM 6802、ESM 6800、ESM 335 x、ESM 928 xなど)が含まれています。
関連資料
| 4 ~ 20 mA電流リング収集応用方案 | WinCE下のModbusマスタ通信プロトコルソフトウェア | |
| WinCE下のModbusデバイス側プロトコルソフトウェア | 英創組み込みLinux工業制御ボードはModbusマスター制御プロトコルソフトウェアをサポートする | |
| Linux下のModbusデバイス側プロトコルソフトウェアの紹介 | ESM 6802はQt MODBUSプログラム開発をサポートする | |
| 英創マザーボードにModbus通信プロトコルをプリインストールする |
